package leetcode_题库;

/**
 * Created by IntelliJ IDEA.
 *
 * @ProjectName leetcode
 * @Author Ding
 * @CreateTime 2022/8/23 18:40 星期二
 */
public class _242_有效的字母异位词 {
    public static void main(String[] args) {
        String s = "anagram";
        String t = "nagaram";
        System.err.println(isAnagram(s, t));
    }

    /**
     * > 2022/08/23 18:52:31
     * 解答成功:
     * 	执行耗时:1 ms,击败了100.00% 的Java用户
     * 	内存消耗:41.3 MB,击败了81.19% 的Java用户
     * @param s
     * @param t
     * @return
     */
    public static boolean isAnagram(String s, String t) {
        //若长度不匹配，不可能异位
        if (s.length() != t.length()) {
            return false;
        }
        //转为字符数组，建立计数器
        char[] cs = s.toCharArray();
        char[] ct = t.toCharArray();
        int[] table = new int[26];
        //计数相加
        for (char c : cs) {
            table[c - 'a']++;
        }
        //遍历ct进行查找，同时计数器-1，若存在减完小于0，则false
        for (char c : ct) {
            if (--table[c - 'a'] < 0) {
                return false;
            }
        }
        return true;
    }
}
